@namespace Oqtane.Modules.HtmlText
@inherits ModuleBase
@inject ISettingService SettingService
@implements Oqtane.Interfaces.ISettingsControl
@inject IStringLocalizer<Settings> Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer

<div class="container">
    <div class="row mb-1 align-items-center">
        <Label Class="col-sm-3" For="files" ResourceKey="AllowFileManagement" ResourceType="@resourceType" HelpText="Specify If Editors Can Upload and Select Files">Allow File Management: </Label>
        <div class="col-sm-9">
            <select id="files" class="form-select" @bind="@_allowfilemanagement">
                <option value="true">@SharedLocalizer["Yes"]</option>
                <option value="false">@SharedLocalizer["No"]</option>
            </select>
        </div>
    </div>
    <div class="row mb-1 align-items-center">
        <Label Class="col-sm-3" For="files" ResourceKey="AllowRawHtml" ResourceType="@resourceType" HelpText="Specify If Editors Can Enter Raw HTML">Allow Raw HTML: </Label>
        <div class="col-sm-9">
            <select id="files" class="form-select" @bind="@_allowrawhtml">
                <option value="true">@SharedLocalizer["Yes"]</option>
                <option value="false">@SharedLocalizer["No"]</option>
            </select>
        </div>
    </div>
</div>

@code {		
	private string resourceType = "Oqtane.Modules.HtmlText.Settings, Oqtane.Client"; // for localization
    private string _allowfilemanagement;
	private string _allowrawhtml;

    protected override void OnInitialized()
    {
        try
        {
			_allowfilemanagement = SettingService.GetSetting(ModuleState.Settings, "AllowFileManagement", "true");
			_allowrawhtml = SettingService.GetSetting(ModuleState.Settings, "AllowRawHtml", "true");
		}
        catch (Exception ex)
        {
            ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
        }
    }

    public async Task UpdateSettings()
    {
        try
        {
			var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId);
            settings = SettingService.SetSetting(settings, "AllowFileManagement", _allowfilemanagement);
			settings = SettingService.SetSetting(settings, "AllowRawHtml", _allowrawhtml);
			await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId);
        }
        catch (Exception ex)
        {
            ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error);
        }
    }
}
